以前,拿到一个closable资源后,如果对它操作,都要先用try包起来,最后一定要在finally里面关掉:
Closable resource = xxx; //此处为得到这个resource的逻辑
try {
// 处理逻辑
} finally {
if (resource != null) {
try {
resource.close();
}
}
自从Java 7之后,根据官方文档tryResouceClose,任何实现了java.lang.AutoClosable
,以及java.io.Closable
接口的对象都可以在这段代码结束之后被关掉:
try (Closable resource = xxx) {
// 处理逻辑
}
.NET里面也有个类似的用法,C#里面一般实现了IDisposable接口的对象在使用时最好结束后调用它的dispose方法,也可以使用using的方式来帮助回收:
using (IDisposable resource = xxx) {
// 处理逻辑
}